/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.softnight.dao;

import br.com.softnight.db.ConnectionFactory;
import br.com.softnight.entidades.Produto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Franklin
 */
public class ProdutoDAO {

    //método para incluir um aluno na base de dados
    public void insere(Produto produto) throws SQLException {
    
        String insereSql = "INSERT INTO Produto ("
                + " id,"
                + " nome,"
                + " preco"
                + " ) VALUES (?, ?, ?)";
        Connection conn = ConnectionFactory.getConnection();
        PreparedStatement pstmt = conn.prepareStatement(insereSql);
        pstmt.setLong(1, produto.getId());
        pstmt.setString(2, produto.getNome());
        pstmt.setDouble(3, produto.getPreco());
        pstmt.executeUpdate();
    }

    //método para consultar um aluno de determinada matricula fornecida no parametro matrAluno
    public Produto consultaPorId(Long id) throws SQLException {
        Produto produto = null;
            
        String consultaSql = "SELECT"
                + " id,"
                + " nome,"
                + " preco"
                + " FROM Produto WHERE id = ?";
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement pstmt = con.prepareStatement(consultaSql);
        pstmt.setLong(1, id);
        ResultSet resultado = pstmt.executeQuery();
        if (resultado.next()) {
            String nome = resultado.getString("nome");
            Double preco = resultado.getDouble("preco");
            
            produto = new Produto();
            produto.setId(id);
            produto.setNome(nome);
            produto.setPreco(preco);
        }

        return produto;
    }

    public ArrayList<Produto> consultaTodos() throws SQLException {
        ArrayList<Produto> produtos = new ArrayList<Produto>();
            
        String consultaSql = "SELECT"
                + " id,"
                + " nome,"
                + " preco"
                + " FROM Produto ";
        Connection con = ConnectionFactory.getConnection();
        PreparedStatement pstmt = con.prepareStatement(consultaSql);
        ResultSet resultado = pstmt.executeQuery();
        while (resultado.next()) {
            Long id = resultado.getLong("id");
            String nome = resultado.getString("nome");
            Double preco = resultado.getDouble("preco");

            Produto produto = new Produto();
            produto.setId(id);
            produto.setNome(nome);
            produto.setPreco(preco);
            
            produtos.add(produto);
        }

        return produtos;
    }

    public void atualiza(Produto produto) throws SQLException {
        String atualizaSql = "UPDATE Produto SET"
                + " nome = ?,"
                + " preco = ?"
                + " WHERE id = ?";
        Connection conn = ConnectionFactory.getConnection();
        PreparedStatement pstmt = conn.prepareStatement(atualizaSql);
        pstmt.setString(1, produto.getNome());
        pstmt.setDouble(2, produto.getPreco());
        pstmt.setLong(3, produto.getId());

        pstmt.executeUpdate();
    }

    public void exclui(Long id) throws SQLException {
        String deleteSql = "DELETE FROM Produto WHERE id = ?";
        Connection conn = ConnectionFactory.getConnection();
        PreparedStatement pstmt = conn.prepareStatement(deleteSql);
        pstmt.setLong(1, id);
        pstmt.execute();
    }
}
